package tedu.innerclass;
/*本类用于测试内部类的入门案例*/
public class TestInner1 {
    public static void main(String[] args) {
        //创建内部类的对象,使用内部类的资源
        /* 内部类创建对象的格式:
        外部类名.内部类名 对象名 = 外部对象.内部对象;*/
        Outer.Inner oi = new Outer().new Inner();
        oi.delete();
        System.out.println(oi.sum);
        new Outer().find();


    }
}
//创建外部类
class Outer{
    //1.1定义外部类的成员变量
    String name;
    private int age;
    //1.2定义外部类的成员方法
    public void find(){
        System.out.println("外部类...find()");
        //测试外部类能否使用内部类的资源
        //System.out.println(sum);//不能直接调用内部类的属性
        //delete();//不能直接调用内部类的方法
        /*外部类如果想要使用内部类的资源,必须先创建内部类的对象
        * 通过内部类对象来调用内部类的资源*/
        Inner in=new Inner();
        System.out.println(in.sum);
        in.delete();
    }
    //2.定义内部类--外部类的特殊成员
    /*根据内部类位置的不同,分为成员内部类(类里方法外).局部内部类(方法里)*/
    class Inner{
        //3.1定义内部类的成员变量
        int sum=10;
        //3.2定义内部类的成员方法
        public void delete(){
            System.out.println("内部类...delete()");
            /*结论:内部类可以直接使用外部类的资源,私有成员也可以!*/
            System.out.println(name);
            System.out.println(age);
            /*注意:此处测试完毕需要注释掉,否则来回调用
            * 会抛出异常StackOverFlowException栈溢出异常*/
            //find();
        }
    }
}










